home *** CD-ROM | disk | FTP | other *** search
-
- /*******************************************************************************
- ********************************************************************************
- ********************************************************************************
-
- PERMISSION TO COPY THIS SOFTWARE IS HEREBY GIVEN BY THE AUTHOR PROVIDED THAT
- THIS LEADING MESSAGE IS INCLUDED IN ALL OF THE RELEVANT SOURCE FILES.
-
- P. SCHMITZ, UNIVERSITY OF KEELE, MAY 1988.
-
-
- ********************************************************************************
- ********************************************************************************
- *******************************************************************************/
- #include "header.h"
-
- /*
- *What follows are the routines to draw the console and plot all the
- *data onto it. plot1, plot2 are for the message window.
- */
-
- plot1(cp,p)
- register struct player *cp;
- char p[];
- {
- if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
- poscurs(cp,20,21);
- write(cp->fd,p,57);
- beep(cp);
- }
-
- plot2(cp,p)
- register struct player *cp;
- char p[];
- {
- if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
- poscurs(cp,20,22);
- write(cp->fd,p,57);
- }
-
- broadcast(r)
- char r[];
- {
- struct player *o;
-
- o=startlist;
- if (noofplayers==1) return(0);
-
- while (o!=NULL)
- {
- plot1(o," Uhura : Message from Starfleet Command Sir! ");
- plot2(o,r);
- o=o->next;
- }
- }
-
- plotstatus(cp,x)
- register struct player *cp;
- int x;
- {
- cp->stat=x;
- if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
- poscurs(cp,9,22);
- switch(x)
- {
- case 0: write(cp->fd,"Com Link :",10); break;
- case 1: write(cp->fd,"Prefix No.",10); break;
- case 2: write(cp->fd,"RED ALERT ",10); break;
- case 3: write(cp->fd," green ",10); break;
- case 4: write(cp->fd," damaged! ",10); break;
- case 5: write(cp->fd,"auto-pilot",10); break;
- case 6: write(cp->fd,"Locking...",10); break;
- case 7: write(cp->fd," docked ",10); break;
- case 8: write(cp->fd," orbiting ",10); break;
- case 9: write(cp->fd," scanning ",10); break;
- case 10:write(cp->fd,"On planet ",10); break;
- case 11:write(cp->fd,"Help sheet",10); break;
- case 12:write(cp->fd,"DEAD!!!!!!",10); break;
- default: break;
- }
- }
-
- plotcloakingdevice(cp)
- register struct player *cp;
- {
- if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
- poscurs(cp,15,14);
- if (cp->cloakingdevice)
- write(cp->fd,"on ",3);
- else
- write(cp->fd,"off",3);
- }
-
- plotshields(cp)
- register struct player *cp;
- {
- if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
- poscurs(cp,15,16);
- if (cp->shields)
- write(cp->fd,"on ",3);
- else
- write(cp->fd,"off",3);
- }
-
- plotenergy(cp)
- register struct player *cp;
- {
- char energy[5];
-
- if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
- if (cp->energy>0)
- {
- sprintf(energy," %4d",cp->energy);
- poscurs(cp,14,7);
- write(cp->fd,energy,5);
- } else
- {
- if ((cp->stat<12))
- {
- plot1(cp," You ran out of energy and life support systems failed ");
- plot2(cp," Captain. I'm afraid, theres no survivors.You blew it. ");
- if (cp->reason>0) cp->reason= -2;
- finish(cp);
- }
- }
- }
-
- plotbattleenergy(d)
- struct player *d;
- {
- char energy[5];
-
- if ((d->id==ROMID)||(d->id==KLINGID)) return(0);
- sprintf(energy," %4d",d->energy);
- poscurs(d,14,7);
- write(d->fd,energy,5);
- sprintf(energy," %4d",d->maxenergy);
- poscurs(d,14,9);
- write(d->fd,energy,5);
- }
-
- plotmaxenergy(cp)
- register struct player *cp;
- {
- char energy[5];
-
- if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
- sprintf(energy," %4d",cp->maxenergy);
- poscurs(cp,14,9);
- write(cp->fd,energy,5);
- }
-
- plotvelocity(cp)
- register struct player *cp;
- {
- char velocity[14];
-
- if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
- sprintf(velocity,"x:%3d y:%3d ",cp->xvel,cp->yvel);
- poscurs(cp,6,5);
- write(cp->fd,velocity,13);
- }
-
- plotposition(cp)
- register struct player *cp;
- {
- char position[14];
-
- if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
- poscurs(cp,6,3);
- sprintf(position,"x:%3d y:%3d ",cp->xpos,cp->ypos);
- write(cp->fd,position,13);
- }
-
- plotphaserbanks(cp)
- register struct player *cp;
- {
- char phaser[5];
- char c;
-
- if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
- if (cp->weaponselect==0) c='s'; else c=' ';
- sprintf(phaser,"%c %2d",c,cp->phaserbanks);
- poscurs(cp,14,18);
- write(cp->fd,phaser,4);
-
- sprintf(phaser,"%2d",cp->phaserreach);
- poscurs(cp,7,19);
- write(cp->fd,phaser,2);
- sprintf(phaser," %2d",cp->maxphaser);
- poscurs(cp,14,19);
- write(cp->fd,phaser,4);
- }
-
- plotphotontorpedos(cp)
- register struct player *cp;
- {
- char photon[5];
- char c;
-
- if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
- if (cp->weaponselect==1) c='s'; else c=' ';
- sprintf(photon,"%c %2d",c,cp->photontorpedos);
- poscurs(cp,14,20);
- write(cp->fd,photon,4);
-
- sprintf(photon,"%2d",cp->photonreach);
- poscurs(cp,7,21);
- write(cp->fd,photon,2);
- sprintf(photon," %2d",cp->maxphoton);
- poscurs(cp,14,21);
- write(cp->fd,photon,4);
- }
-
- plotscore(cp)
- register struct player *cp;
- {
- char score[8];
-
- if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
- sprintf(score," %6d",cp->score);
- poscurs(cp,9,23);
- write(cp->fd,score,7);
- }
-
-
- plotdata(cp)
- register struct player *cp;
- {
- if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
- plotvelocity(cp);
- plotposition(cp);
- plotenergy(cp);
- plotmaxenergy(cp);
- plotcloakingdevice(cp);
- plotshields(cp);
- plotphaserbanks(cp);
- plotphotontorpedos(cp);
- plotstatus(cp,3);
- plotscore(cp);
- }
-
- /*
- *routine to redraw the console at anytime
- */
-
- redrawconsole(cp)
- register struct player *cp;
- {
- if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
- clrscreen(cp);
- plotdata(cp);
- drawcross(cp);
- drawconsole(cp);
- }
-
-